
from playai.settings import TMP_DIR, TMP_CPP, TMP_EXE, COMPILE_CMD
import os, shutil, subprocess

def compile(code_file):
	'''	编译给定的文件，暂只支持CPP文件。

	编译时会先将源代码文件拷贝至配置中指定的临时文件目录(TMP_DIR)，编译完成后再将可执行文件拷贝回原文件所在目录
	:param code_file:需要编译的代码文件
	:return:编译成功时返回可执行文件路径，失败时返回False
	'''
	src_file = TMP_CPP
	shutil.copy(code_file, TMP_CPP)
	cwd = os.getcwd()
	os.chdir(TMP_DIR)
	if os.path.exists(TMP_EXE):
		os.remove(TMP_EXE)
	subprocess.call(COMPILE_CMD.format(src_file), shell=True)
	os.chdir(cwd)
	if os.path.exists(TMP_EXE):
		origin_dir = os.path.splitext(code_file)[0]
		shutil.move(TMP_EXE, origin_dir + ".exe")
		return origin_dir + ".exe"
	else:
		return False